FIG. 1 shows a computer network 100 that includes both client computers 111–113 and server computers 131–133. The network 100 also includes data connections that allow the client computers to communicate with the servers. Those data connections include access connections 114–116, a service provider's point of presence (POP) 110, network 120, proxy server 117, and network 130. POP 110 includes data communications equipment that allows a client computer 111–113 to connect to the network 120. For example, POP 110 may include dial-up modem banks, cable modem banks, a T1 interface, wireless communications equipment, or other data transmission equipment.
After a client computer 111–113 has been connected to the network 120 (through POP 110) it may exchange data with other computers on the network 120. Computers on different networks 120 and 130 also can exchange data with each other by sending their data request to proxy server 117 which, in turn, can forward their request to the destination computer, obtain a response from the destination, and return the response to the requesting computer.
The servers 131–133 and clients 111–113 may communicate with each other using the hypertext transfer protocol (HTTP). HTTP is a data communications protocol that is used by web browser programs (such as Microsoft Internet Explorer and Netscape Navigator) to communicate with web server applications (such as Microsoft Internet Information Server and Netscape Server). Thus, by executing a web browser, a client computer 111–113 can exchange data with a server 131–133 that is executing a web server application.
When a web server receives a HTTP data request from a browser, a web server application, such as a Common Gateway Interface (CGI) script, may be used to query databases, customize responses, and/or perform other processing used to generate a response. The web server application may need data about the client computer, the browser, its user, and/or other data in order to complete its processing of the data request. For example, a web server application may provide customized weather information based on a user's home address. The web application may obtain the user's address information by sending a data input form to the browser and receiving a user's response that contains the needed information. A web server application also may obtain needed data from web server environmental variables that are populated by data in HTTP header fields, by a web server, and/or by a web server sub-component. For example, a CGI script's response to a data request may depend on the type of browser originating the request. The CGI script may access a HTTP environment variable (“HTTP_USER_AGENT”) populated by the web server using data from a “User-Agent” field in a HTTP header. The value of the HTTP_USER_AGENT variable identifies the type of browser originating a request so that the CGI script can customize its response to that browser.
A web server and a browser also may exchange web cookies that contain data. A web cookie is data file that can be automatically exchanged between browsers and servers along with the request and responses exchanged between the browsers and servers. When a web cookie is received by a browser, it can be stored at the client computer. During future transactions with the web server, the web cookie (and any data that it contains) can be sent back to the web server. By using data stored in web cookies, a web server's need to request data from a user may be reduced. However, since web cookies are typically stored on a client computer, they may be deleted and their data lost. Furthermore, if a user moves to another computer, web cookie information stored on the user's original computer will be unavailable to that user. These factors may reduce the utility of web cookies.
The present inventors recognize that information service systems, such as web servers, should provide convenient, secure, reliable, and simple means of interacting with users. The present inventors further recognize when a server must query a user for data or use web cookies for data storage and input, convenience, security, reliability, and simplicity may suffer. Consequently, the invention disclosed herein provides additional means of providing information to a web server application that may provide additional flexibility in implementing information systems.